package com.demo.common;

import java.net.ServerSocket;
import java.net.Socket;

import com.demo.blog.BlogController;
import com.demo.blog.JiaJingController;
import com.demo.index.IndexController;
import com.demo.user.UserController;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.kit.PropKit;
import com.jfinal.render.ViewType;

import cn.jiahui.JiahuiController;
import cn.jiahui.LiftRWThread;
import cn.jiahui.LiftService;

/**
 * API引导式配置
 */
public class DemoConfig extends JFinalConfig {
	private static boolean continueFlag = true;
//	public static LiftRWThread liftRWThread = null;
	public static LiftService liftService = null;
	/**
	 * 配置常量
	 */
	public void configConstant(Constants me) {
		PropKit.use("a_little_config.txt");				// 加载少量必要配置，随后可用PropKit.get(...)获取值
		me.setDevMode(PropKit.getBoolean("devMode", false));
		me.setViewType(ViewType.JSP); 							// 设置视图类型为Jsp，否则默认为FreeMarker
	}
	
	/**
	 * 配置路由
	 */
	public void configRoute(Routes me) {
		me.add("/", IndexController.class, "/index");	// 第三个参数为该Controller的视图存放路径
		me.add("/blog", BlogController.class);			// 第三个参数省略时默认与第一个参数值相同，在此即为 "/blog"
		me.add("/user",UserController.class);
		me.add("/jiajing",JiaJingController.class);
		me.add("/jiahui",JiahuiController.class);
	}
	
	/**
	 * 配置插件
	 */
	public void configPlugin(Plugins me) {
		// 配置C3p0数据库连接池插件
//		C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
//		me.add(c3p0Plugin);
//		
//		// 配置ActiveRecord插件
//		ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
//		me.add(arp);
//		arp.addMapping("blog", Blog.class);	// 映射blog 表到 Blog模型
//		arp.addMapping("user",User.class);
//		arp.addMapping("test", Test.class);
	}
	
	/**
	 * 配置全局拦截器
	 */
	public void configInterceptor(Interceptors me) {
		
	}
	
	/**
	 * 配置处理器
	 */
	public void configHandler(Handlers me) {
		int port = PropKit.getInt("socketPort");
		int synInterval = PropKit.getInt("synInterval");
		liftService = new LiftService(port,synInterval);
		liftService.start();
		
//		new Thread(new Runnable(){
//			@Override
//			public void run() {
//				ServerSocket ss = null;
//				try {
//					int port = PropKit.getInt("socketPort");
//					ss = new ServerSocket(port);
//					while (continueFlag) {
//						Socket s = ss.accept();
//						System.out.println(s.getInetAddress().getHostAddress()+ " connected");
//						liftRWThread = new LiftRWThread(s);
//						new Thread(liftRWThread).start();
//					}
//
//				} catch (Exception e) {
//					e.printStackTrace();
//				} finally {
//					try {
//						ss.close();
//					} catch (Exception e) {
//						e.printStackTrace();
//					}
//					ss = null;
//				}
//			}
//			
//		}).start();
		
	}
	
	/**
	 * 建议使用 JFinal 手册推荐的方式启动项目
	 * 运行此 main 方法可以启动项目，此main方法可以放置在任意的Class类定义中，不一定要放于此
	 */
	public static void main(String[] args) {
		
		
		
		JFinal.start("WebRoot", 8089, "/", 5);
		
		}
}
